$(document).ready(function() {
	var onp = 0.3;

	Client.bodyFixed();
	Client.tabKlisimo();

	$('.odigies_titlos,.odigies_paragrafos,.odigies_index').addClass('sinefo');

	$('.odigies_titlos').
	append($('<div>').addClass('odigies_navigationTitlos').
		append($('<img>').addClass('odigies_navigationTitlosIcon odigies_navigationPanoIcon').attr({
			src: '../ikona/velos/goPano.png',
		}).on('click', function(e) {
			var p;
			e.stopPropagation();
			p = $(this).closest('.odigies_anchor').prevAll('.odigies_anchor').first();
			window.location = Client.server + 'odigies/index.php#' + (p.length ? p.attr('name') : '');
			return false;
		})).
		append($('<img>').addClass('odigies_navigationTitlosIcon odigies_navigationKatoIcon').attr({
			src: '../ikona/velos/goKato.png',
		}).on('click', function(e) {
			var p;
			e.stopPropagation();
			p = $(this).closest('.odigies_anchor').nextAll('.odigies_anchor').first();
			if (p.length) window.location = Client.server + 'odigies/index.php#' + p.attr('name');
			return false;
		}))).
	on('mouseenter', function(e) {
		e.stopPropagation();
		$(this).find('.odigies_navigationTitlos').finish().fadeTo(100, onp);
	}).
	on('mouseleave', function(e) {
		e.stopPropagation();
		$(this).find('.odigies_navigationTitlos').finish().fadeTo(100, 0);
	}).
	parents('a').addClass('odigies_anchor').attr({
		href: '#',
	});

	$('.odigies_navigationPanoIcon').attr({title:'Προηγούμενο'});
	$('.odigies_navigationKatoIcon').attr({title:'Επόμενο'});

	$('.odigies_navigationTitlos').
	on('mouseenter', function(e) {
		e.stopPropagation();
		$(this).finish().fadeTo(100, 1);
	}).
	on('mouseleave', function(e) {
		e.stopPropagation();
		$(this).finish().fadeTo(100, 0);
	});

	// Στις δυο άκρες της σελίδας υπάρχει κάθετη ζώνη στην οποία εμφανίζεται navigation
	// panel με βέλη προς τα πάνω και προς τα κάτω που οδηγούν στο προηγούμενο και στο
	// επόμενο κεφάλαιο αντίστοιχα. Το navigation panel εμφανίζεται όταν ο δείκτης εισέλθει
	// σ' αυτή τη ζώνη και αποκρύπτεται όταν εξέλθει από τη ζώνη.

	$('.odigies_navigationZone').

	// Όταν ο δείκτης εισέλθει στην επίμαχη ζώνη, εμφανίζεται το navigation panel. Πρέπει,
	// όμως, να διαφοροποιήσουμε κάπως το υψόμετρο στο επάνω και στο κάτω σημείο.

	on('mouseenter', function(e) {
		var t, d;

		e.stopPropagation();
		t = e.pageY - $(window).scrollTop() - 30;
		if (t < 0) t = 0;
		else {
			d = $(window).height() - t;
			if (d < 70) t -= (70 - d);
		}

		$(this).find('.odigies_navigationPanel').finish().css({
			top: t + 'px',
			display: 'block',
		});
	}).

	// Όταν ο δείκτης εξέλθει από την επίμαχη ζώνη, αποκρύπτεται το navigation panel.

	on('mouseleave', function(e) {
		e.stopPropagation();
		$(this).find('.odigies_navigationPanel').finish().fadeOut();
	}).

	// Εισάγουμε τώρα mouse event listener για τα clicks που κάνουμε πάνω στα βελάκια
	// του navigation panel.

	find('.odigies_navigationPanelIcon').
	on('click', function(e) {
		var w, m, a, ad, kato, ap, ak, dp, dk;

		e.stopPropagation();
		w = $(window).scrollTop();
		m = e.pageY - w;

		// Θα εντοπίσουμε το κεφάλαιο (anchor) στο οποίο βρίσκεται ο δείκτης, δηλαδή
		// το τρέχον κεφάλαιο από το οποίο επιχειρούμε να μεταβούμε σε προηγούμενο,
		// ή επόμενο κεφάλαιο.

		a = null;
		$('.odigies_anchor').each(function() {
			var d, t = $(this).offset().top - w;
			if (t > m) return;
			if (a && ((d = m - t) > ad)) return;
			a = this;
			ad = d;
		});

		// Ορίζουμε το flag "kato" το οποίο τίθεται true εφόσον κάναμε κλικ στο κάτω
		// βέλος, αλλιώς τίθεται false.

		kato = $(this).hasClass('odigies_navigationKatoIcon');

		// Αν δεν υπάρχει τρέχον κεφάλαιο (είμαστε στα περιεχόμενα) και κατευθυνόμαστε
		// προς τα πάνω, δεν μπορούμε να κάνουμε περαιτέρω ενέργειες.

		if ((!a) && (!kato)) return;

		// Θα εντοπίσουμε τώρα το κοντινότερο προς τα πάνω ("ap") και προς τα κάτω ("ak")
		// κεφάλαιο.

		ap = null;
		ak = null;

		$('.odigies_anchor').each(function() {
			var d, t;

			// Εξαιρούμε, φυσικά, το τρέχον κεφάλαιο.

			if (this === a) return;

			// Υπολογίζουμε το υψόμετρο του κεφαλαίου μέσα στο παράθυρο του browser.

			t = $(this).offset().top - w;

			// Εξετάζουμε πρώτα την περίπτωση κατά την οποία το κεφάλαιο βρίσκεται μετά
			// την τρέχουσα θέση του δείκτη, δηλαδή χαμηλότερα.

			if (t > m) {
				// Αν δεν κατευθυνόμαστε προς τα κάτω, το κεφάλαιο δεν μας ενδιαφέρει.

				if (!kato) return;

				// Εφόσον είναι κοντινότερο από τυχόν προηγούμενο κεφάλαιο που έχουμε
				// εντοπίσει προς την ίδια κατεύθυνση, το κρατάμε.

				d = t - m;
				if ((ak !== null) && (d > dk)) return;

				ak = $(this);
				dk = d;
			}

			// Εξετάζουμε τώρα την περίπτωση κατά την οποία το ανά χείρας κεφάλαιο βρίσκεται
			// πριν την τρέχουσα θέση του δείκτη, δηλαδή προς τα πάνω.

			else {
				// Αν δεν κατευθυνόμαστε προς τα πάνω, το κεφάλαιο δεν μας ενδιαφέρει.

				if (kato) return;

				// Εφόσον είναι κοντινότερο από τυχόν προηγούμενο κεφάλαιο που έχουμε
				// εντοπίσει προς την ίδια κατεύθυνση, το κρατάμε.

				d = m - t;
				if ((ap !== null) && (d > dp)) return;

				ap = $(this);
				dp = d;
			}
		});

		// Έχουμε κάνει την έρευνά μας και θα επιχειρήσουμε να μεταβούμε στο κοντινότερο
		// κεφάλαιο προς την επιθυμητή κατεύθυνση.

		if (kato) {
			if (ak === null) return;
			a = ak.attr('name');
		}
		else if (ap === null) a = ''
		else a = ap.attr('name');

		window.location = Client.server + 'odigies/index.php#' + a;
	});
});

Odigies = {};

Odigies.paraskinio = function(e) {
	Client.stopProp(e);
	Client.paraskinio.open();
	return false;
}
